iT邦幫忙

2017 iT 邦幫忙鐵人賽
DAY 4
0
自我挑戰組

30天 Docker E.L.K stack 系列 第 4

Day4 - 便利的 logstash plugin (input)

  • 分享至 

  • xImage
  •  

我們在昨天的內容分享了基本的 logstash 使用方式,今天要介紹的則是 logstash 的 input plugins 。其實 logstash 的運作除了基於其 input, filter, ouput 的架構外,在這三層架構中使用的 plugins 才是讓整個 logstash 具有資料切割與過濾能力的核心關鍵,input plugins 提供了我們獲取各式不同資料來源的方式,以下分別介紹幾個常用的 input plugin。

  • tcp

    首先說明一下昨日在預設的 docker-elk/logstash/config/logstash.conf 所使用的 input plugin 便是 tcp,tcp 這個 input plugin 可以接收來自於 TCP socket 的資訊,雖說昨日我們因測試環境的關係將訊息傳送至 127.0.0.1,但其實你可以試試使用不同的機器將訊息傳送至你裝有 logsash 的機器 ip 上,如此一來我們便可以多台機器做為資料來源囉。

    input {
      tcp {
          port => 9527
          type => apache
      }
    
      tcp {
          port => 9453
          type => dev_log
      }
    }  
    

    你可以善用不同接收端口的特性來分類你的資料類型,透過 type 屬性的賦予有利於我們之後在 filter 進行資料的切割與過濾。

  • log4j

    如果你是 java 環境的開發者大概對這個套件不陌生,而且在這裡很友善的可以直接透過 input plugin 幫你切割出幾個重要的資訊,包含了:timestamp, path, priority, logger_name, thread, class, file, method

    input {
      log4j {
        type => "log4j"
        port => 3690
      }
    }
    

    注意你的配置文件可能需要設置對應的接收端口如: log4j.appender.logstash.Port=3690

  • file

    另一個常用的 input plugin ,常用來觀察已寫成純文字檔的資料來源,預設持續觀察指定檔案如有異動則觸發 logstash 進行基料擷取。

    input {
      file {
          path => ["/var/log/*.log", "/var/log/errorLog"]
          type => "system"
      }
    }
    

    如果你是初次啟用想要從頭取得全部 log 內容呢?
    直接添加屬性 start_position => "beginning" 即可。

    input {
      file {
          path => ["/var/log/*.log", "/var/log/errorLog"]
          type => "system"
          start_position => "beginning"
      }
    }
    

    其他常用參數有:

    • discover_interval: logstash 多久監聽一次指定路徑的檔案,預設15秒
    • exclude: 想排除監聽的檔案

今天就簡單介紹一下以上三個常用的 input plugins 更多詳細的參數設置可以參考官方網站


上一篇
Day3 - logstash 輸入配置
下一篇
Day5 - 便利的 logstash plugin (filter)
系列文
30天 Docker E.L.K stack 30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 則留言

0
chichi
iT邦新手 2 級 ‧ 2018-05-04 15:24:05

我想問一下如果

TCP {
    potr => 9487
    type => dev
}

為何我用其他測試機用 nc LEKIP 9487 < a.txt
kibana 都沒收到資訊 ??

你好 我也是剛學的新手
但我猜有可能是 Linux 防火牆沒打開

chichi iT邦新手 2 級 ‧ 2019-01-12 18:17:30 檢舉

如果使用 Docker,記得 docker-compose 要把 9487 port 定義

chichi iT邦新手 2 級 ‧ 2019-01-12 18:18:16 檢舉

potr 不是 port 吧 ?

我要留言

立即登入留言